﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace ECommerce.Model.Ubicaciones
{
    public class Dirección : ECommerce.Model.Objeto
    {
        private ECommerce.Model.Ubicaciones.País país;
        public ECommerce.Model.Ubicaciones.País País
        {
            get { return this.país; }
            set { this.país = value; }
        }
        private ECommerce.Model.Ubicaciones.Provincia provincia;
        public ECommerce.Model.Ubicaciones.Provincia Provincia
        {
            get { return this.provincia; }
            set { this.provincia = value; }
        }
        private ECommerce.Model.Ubicaciones.Ciudad ciudad;
        public ECommerce.Model.Ubicaciones.Ciudad Ciudad
        {
            get { return this.ciudad; }
            set { this.ciudad = value; }
        }
        private ECommerce.Model.Ubicaciones.Municipio municipio;
        public ECommerce.Model.Ubicaciones.Municipio Municipio
        {
            get { return this.municipio; }
            set { this.municipio = value; }
        }
        private ECommerce.Model.Ubicaciones.Barrio barrio;
        public ECommerce.Model.Ubicaciones.Barrio Barrio
        {
            get { return this.barrio; }
            set { this.barrio = value; }
        }
        private ECommerce.Model.Ubicaciones.Calle calle;
        public ECommerce.Model.Ubicaciones.Calle Calle
        {
            get { return this.calle; }
            set { this.calle = value; }
        }
        private int número;
        public int Número
        {
            get { return this.número; }
            set { this.número = value; }
        }
        private string piso;
        public string Piso
        {
            get { return this.piso; }
            set { this.piso = value; }
        }
        private string departamento;
        public string Departamento
        {
            get { return this.departamento; }
            set { this.departamento = value; }
        }
        public override void Load(int ident)
        {
            base.Load(ident);
            this.Id = ident;
            this.Load(ECommerce.DAO.Cache.Ubicaciones.Dirección.GetDirecciónById(ident));
            if (this.Id == 0)
            {
                this.Id = ident;
                this.Load(ECommerce.DAO.SQL.Ubicaciones.Dirección.GetDirecciónById(ident));
                ECommerce.DAO.Cache.Ubicaciones.Dirección.SetDirección(this);
                this.País = ECommerce.DAO.Cache.Ubicaciones.Dirección.GetPaísByIdDirección(ident);
                if (this.País == null)
                    this.País = ECommerce.DAO.SQL.Ubicaciones.Dirección.GetPaísByIdDirección(ident);
                this.Provincia = ECommerce.DAO.Cache.Ubicaciones.Dirección.GetProvinciaByIdDirección(ident);
                if (this.Provincia == null)
                    this.Provincia = ECommerce.DAO.SQL.Ubicaciones.Dirección.GetProvinciaByIdDirección(ident);
                this.Ciudad = ECommerce.DAO.Cache.Ubicaciones.Dirección.GetCiudadByIdDirección(ident);
                if (this.Ciudad == null)
                    this.Ciudad = ECommerce.DAO.SQL.Ubicaciones.Dirección.GetCiudadByIdDirección(ident);
                this.Municipio = ECommerce.DAO.Cache.Ubicaciones.Dirección.GetMunicipioByIdDirección(ident);
                if (this.Municipio == null)
                    this.Municipio = ECommerce.DAO.SQL.Ubicaciones.Dirección.GetMunicipioByIdDirección(ident);
                this.Barrio = ECommerce.DAO.Cache.Ubicaciones.Dirección.GetBarrioByIdDirección(ident);
                if (this.Barrio == null)
                    this.Barrio = ECommerce.DAO.SQL.Ubicaciones.Dirección.GetBarrioByIdDirección(ident);
                this.País = ECommerce.DAO.Cache.Ubicaciones.Dirección.GetCalleByIdDirección(ident);
                if (this.Calle == null)
                    this.Calle = ECommerce.DAO.SQL.Ubicaciones.Dirección.GetCalleByIdDirección(ident);
            }
        }
        public override void Load(System.Data.DataRow dr)
        {
            base.Load(dr);
            ECommerce.Factory.Ubicaciones.Dirección.Load(this, dr);
            ECommerce.DAO.Cache.Ubicaciones.Dirección.SetDirección(this);
        }
        public override void Save()
        {
            base.Save();
            this.Id = ECommerce.DAO.SQL.Ubicaciones.Dirección.SetDirección(this);
            ECommerce.DAO.Cache.Ubicaciones.Dirección.SetDirección(this);
        }
        public override void Del()
        {
            base.Del();
            ECommerce.DAO.Cache.Ubicaciones.Dirección.DelDirección(this);
        }
    }
}
